python的for语句结束 | 您所在的位置:网站首页 › python for 循环结束 › python的for语句结束 |
在早期版本的Python中,引入了列表推导的概念来消除这两种代码模式: # Go through each item in a list and run a test on them # build a new list containing only items that pass the test results = [] for item in somelist: if sometest(item): results.add(item) and # build a new list by changing every item in a list in the # same way results = [] for item in somelist: results.add(2 * item) 通过添加一个新语法,包括将所有三个事物合二为一 – 更改项目和/或测试它们以仅在结果中包含一些项目,并创建结果列表: results = [2 * item for item in somelist if sometest(item)] # results is a list 此功能使用[]语法在Python中指示“list”,并在内存中立即构建列表. 有时候你不需要或者不需要内存中建立的整个列表,所以后来的Python版本引入了生成器表达式 – 相同的想法,但它们通过快速返回一个你可以迭代的生成器来节省内存,就像它是一个列表一样,并在您使用它时构建列表. 但它们不能具有相同的语法并且可以直接换出,因为它们的行为略有不同,因此它们使用()代替[],例如: somelist = [1,2,3,4,5] results = (2 * item for item in somelist if sometest(item)) # results is a generator 如果您尝试使用此函数调用函数,则会得到两层括号: function((2 * item for item in somelist)) 这看起来很傻,所以你可以留下一个: function(2 * item for item in somelist) 这似乎是循环独立的循环,但实际上并非如此. 所以用括号你可以这样写: >>> print (item for item in [1,2,3]) at 0x7fe31b8663c0> 哪个是你写的最接近的东西,它是Python 2.x中的有效语法,但它不能达到预期的效果,^^就是它的作用和原因. 或这个: >>> print [item for item in [1,2,3]] [1,2,3] 它生成一个列表并打印列表,另一个与你写的内容相近,但仍然不是你所期望的. – (在我写这篇文章的时候,我的帖子确实没有太多意义,但是呃). |
CopyRight 2018-2019 实验室设备网 版权所有 |